{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 训练数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(200, 1)\n",
      "(200, 1)\n"
     ]
    }
   ],
   "source": [
    "# 生成200个随机点，并改变其形状为200*1\n",
    "x_data = np.linspace(-0.5, 0.5, 200)[:,np.newaxis]\n",
    "noise = np.random.normal(0,0.02,x_data.shape)\n",
    "y_data = np.square(x_data) + noise\n",
    "\n",
    "#查看一下数据形状\n",
    "print(x_data.shape)\n",
    "type(x_data)\n",
    "print(noise.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 构建一个神经网络，用来计算给定x的值，预测y的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 定义两个placeholder\n",
    "x = tf.placeholder(tf.float32, [None,1])\n",
    "y = tf.placeholder(tf.float32, [None,1])\n",
    "\n",
    "# 定义中间层\n",
    "Weights_L1 = tf.Variable(tf.random_normal([1,10]))\n",
    "bias_L1 = tf.Variable(tf.zeros([1,10]))\n",
    "Wx_plus_b_L1 = tf.matmul(x, Weights_L1) + bias_L1\n",
    "# 激活函数\n",
    "L1 = tf.nn.tanh(Wx_plus_b_L1)\n",
    "\n",
    "# 定义输出层\n",
    "Weights_L2 = tf.Variable(tf.random_normal([10,1]))\n",
    "bias_L2 = tf.Variable(tf.zeros([1,1]))\n",
    "Wx_plus_b_L2 = tf.matmul(L1,Weights_L2) + bias_L2\n",
    "prediction = tf.nn.tanh(Wx_plus_b_L2)\n",
    "\n",
    "# 二次代价函数（损失函数）\n",
    "loss = tf.reduce_mean(tf.square(y-prediction))\n",
    "# 梯度下降法\n",
    "train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    # 变量的初始化\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    for _ in range(2000):\n",
    "        sess.run(train_step, feed_dict={x:x_data, y:y_data})\n",
    "        \n",
    "    # 获得预测值\n",
    "    prediction_value = sess.run(prediction,feed_dict={x:x_data})\n",
    "    \n",
    "    plt.figure()\n",
    "    plt.scatter(x_data, y_data)\n",
    "    plt.plot(x_data, prediction_value,'r-', lw=5)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
